Indexes may be used to speed up access to data stored in a database. An index is a data structure that is created using one or more columns of a base table of the database. To illustrate, a base table having columns including the first name, last name, and age of a number of people may be associated with an index on the last names. Thus, a search for all people having a particular last name would utilize the last name index to quickly locate rows corresponding to the search results stored in the database. Types of database indexes may include B-tree structures, a hash table, an R-tree structure, or a bitmap. Access to data stored in a database may be controlled by a database management server.
Database indexes are maintained (i.e. updated) when data in the source table of the index is modified. Index maintenance is performed to provide accurate responses to applications that retrieve data using the index. A database index is normally updated immediately when data in its source table is modified. Changes to base tables result from statements to insert, update, or delete rows in the base table. Maintaining an index immediately may be inefficient because the modifications may be unnecessary. For example, a particular row may be modified several times before the row is read when evaluating a query. In this situation, only the latest change to the row before the query is relevant. Thus, if an individual changes phone numbers several times, a query for the phone number of the individual is only interested in the current phone number and not previous phone numbers. The updates relating to the previous phone numbers may be considered unnecessary. In addition, index maintenance may occur at peak operating times of the database management server. Thus, the processing power of the database management server may be drained due to index maintenance operations.